home *** CD-ROM | disk | FTP | other *** search
/ The Journey to Wild Divine / The Journey to Wild Divine - Disc 2.iso / installers / quicktime / quicktime65pkg / contents / resources / availabilitymacrosh.qt < prev    next >
Text File  |  2003-11-05  |  12KB  |  346 lines

  1. /*
  2.      File:       AvailabilityMacros.h (QuickTime 6.4 edition)
  3.  
  4.      Copyright:  (c) 2001-2003 by Apple Computer, Inc., all rights reserved.
  5.  
  6.      More Info:  See TechNote 2064
  7.  
  8.      Contains:   Autoconfiguration of AVAILABLE_ macros for Mac OS X
  9.  
  10.                  This header enables a developer to specify build time
  11.                  constraints on what Mac OS X versions the resulting
  12.                  application will be run.  There are two bounds a developer
  13.                  can specify:
  14.                  
  15.                       MAC_OS_X_VERSION_MIN_REQUIRED
  16.                       MAC_OS_X_VERSION_MAX_ALLOWED
  17.                       
  18.                 The lower bound controls which calls to OS functions will 
  19.                 be weak-importing (allowed to be unresolved at launch time).
  20.                 The upper bound controls which OS functionality, if used,
  21.                 will result in a compiler error because that functionality is
  22.                 not available on on any OS is the specifed range.
  23.                 
  24.                 For example, suppose an application is compiled with:
  25.                 
  26.                       MAC_OS_X_VERSION_MIN_REQUIRED = MAC_OS_X_VERSION_10_2
  27.                       MAC_OS_X_VERSION_MAX_ALLOWED  = MAC_OS_X_VERSION_10_3
  28.                      
  29.                 and an OS header contains:
  30.                 
  31.                      extern void funcA(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
  32.                      extern void funcB(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2;
  33.                      extern void funcC(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
  34.                      extern void funcD(void) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
  35.                      extern void funcE(void) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
  36.                      extern void funcF(void) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
  37.                      extern void funcG(void) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  38.                      
  39.                      typedef long TypeA DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER;
  40.                      typedef long TypeB DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER;
  41.                      typedef long TypeC DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER;
  42.                      typedef long TypeD DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER;
  43.                      typedef long TypeE DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER;
  44.  
  45.                 Any application code which uses these declarations will get the following:
  46.                 
  47.                                 compile         link          run 
  48.                                 -------         ------        -------
  49.                      funcA:     normal          normal        normal
  50.                      funcB:     warning         normal        normal
  51.                      funcC:     normal          normal        normal
  52.                      funcD:     normal          normal        normal
  53.                      funcE:     normal          normal        normal
  54.                      funcF:     normal          weak          on 10.3 normal, on 10.2 (&funcF == NULL)
  55.                      funcG:     error           error         n/a
  56.                      typeA:     warning
  57.                      typeB:     warning
  58.                      typeC:     warning
  59.                      typeD:     normal
  60.                      typeE:     normal
  61.                   
  62.   
  63. */
  64. #ifndef __AVAILABILITYMACROS__
  65. #define __AVAILABILITYMACROS__
  66.  
  67.  
  68. /*
  69.  * Set up standard Mac OS X versions
  70.  */
  71. #define MAC_OS_X_VERSION_10_0 1000
  72. #define MAC_OS_X_VERSION_10_1 1010
  73. #define MAC_OS_X_VERSION_10_2 1020
  74. #define MAC_OS_X_VERSION_10_3 1030
  75.  
  76.  
  77.  
  78. /* 
  79.  * If min OS not specified, assume 10.0
  80.  * Note: gcc driver may set MAC_OS_X_VERSION_MIN_REQUIRED based on MACOSX_DEPLOYMENT_TARGET environment variable
  81.  */
  82. #ifndef MAC_OS_X_VERSION_MIN_REQUIRED
  83.     #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_0
  84. #endif
  85.  
  86. /*
  87.  * if max OS not specified, assume largerof(10.3, min) (Modified for QuickTime)
  88.  */
  89. #ifndef MAC_OS_X_VERSION_MAX_ALLOWED
  90.     #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_3
  91.         #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_MIN_REQUIRED
  92.     #else
  93.         #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_2
  94.     #endif
  95. #endif
  96.  
  97. /*
  98.  * Error on bad values
  99.  */
  100. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_MIN_REQUIRED
  101.     #error MAC_OS_X_VERSION_MAX_ALLOWED must be >= MAC_OS_X_VERSION_MIN_REQUIRED
  102. #endif
  103. #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_0
  104.     #error MAC_OS_X_VERSION_MIN_REQUIRED must be >= MAC_OS_X_VERSION_10_0
  105. #endif
  106.  
  107. /*
  108.  * only certain compilers support __attribute((weak_import))__
  109.  */
  110. #if defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1020)
  111.     #define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import))
  112. #else
  113.     #define WEAK_IMPORT_ATTRIBUTE
  114. #endif
  115.  
  116. /*
  117.  * only certain compilers support __attribute((deprecated))__
  118.  */
  119. #if defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1)
  120.     #define DEPRECATED_ATTRIBUTE __attribute__((deprecated))
  121. #else
  122.     #define DEPRECATED_ATTRIBUTE
  123. #endif
  124.  
  125. /*
  126.  * only certain compilers support __attribute((unavailable))__
  127.  */
  128. #if defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1)
  129.     #define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable))
  130. #else
  131.     #define UNAVAILABLE_ATTRIBUTE
  132. #endif
  133.  
  134.  
  135.  
  136. /*
  137.  * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  138.  * 
  139.  * Used on functions introduced in Mac OS X 10.0 
  140.  */
  141. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  142.  
  143. /*
  144.  * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED
  145.  * 
  146.  * Used on functions introduced in Mac OS X 10.0, 
  147.  * and deprecated in Mac OS X 10.0
  148.  */
  149. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED    DEPRECATED_ATTRIBUTE
  150.  
  151. /*
  152.  * DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER
  153.  * 
  154.  * Used on types deprecated in Mac OS X 10.0 
  155.  */
  156. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER     DEPRECATED_ATTRIBUTE
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163. /*
  164.  * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  165.  * 
  166.  * Used on declarations introduced in Mac OS X 10.1 
  167.  */
  168. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_1
  169.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER     UNAVAILABLE_ATTRIBUTE
  170. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_1
  171.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER     WEAK_IMPORT_ATTRIBUTE
  172. #else
  173.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  174. #endif
  175.  
  176. /*
  177.  * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED
  178.  * 
  179.  * Used on declarations introduced in Mac OS X 10.1, 
  180.  * and deprecated in Mac OS X 10.1
  181.  */
  182. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
  183.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED    DEPRECATED_ATTRIBUTE
  184. #else
  185.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED    AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  186. #endif
  187.  
  188. /*
  189.  * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1
  190.  * 
  191.  * Used on declarations introduced in Mac OS X 10.0, 
  192.  * but later deprecated in Mac OS X 10.1
  193.  */
  194. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
  195.     #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1    DEPRECATED_ATTRIBUTE
  196. #else
  197.     #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1    AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  198. #endif
  199.  
  200. /*
  201.  * DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER
  202.  * 
  203.  * Used on types deprecated in Mac OS X 10.1 
  204.  */
  205. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
  206.     #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER    DEPRECATED_ATTRIBUTE
  207. #else
  208.     #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER
  209. #endif
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217. /*
  218.  * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  219.  * 
  220.  * Used on declarations introduced in Mac OS X 10.2 
  221.  */
  222. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_2
  223.     #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER     UNAVAILABLE_ATTRIBUTE
  224. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_2
  225.     #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER     WEAK_IMPORT_ATTRIBUTE
  226. #else
  227.     #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  228. #endif
  229.  
  230. /*
  231.  * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
  232.  * 
  233.  * Used on declarations introduced in Mac OS X 10.2, 
  234.  * and deprecated in Mac OS X 10.2
  235.  */
  236. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  237.     #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED    DEPRECATED_ATTRIBUTE
  238. #else
  239.     #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED    AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  240. #endif
  241.  
  242. /*
  243.  * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2
  244.  * 
  245.  * Used on declarations introduced in Mac OS X 10.0, 
  246.  * but later deprecated in Mac OS X 10.2
  247.  */
  248. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  249.     #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2    DEPRECATED_ATTRIBUTE
  250. #else
  251.     #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2    AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  252. #endif
  253.  
  254. /*
  255.  * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2
  256.  * 
  257.  * Used on declarations introduced in Mac OS X 10.1, 
  258.  * but later deprecated in Mac OS X 10.2
  259.  */
  260. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  261.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2    DEPRECATED_ATTRIBUTE
  262. #else
  263.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2    AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  264. #endif
  265.  
  266. /*
  267.  * DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER
  268.  * 
  269.  * Used on types deprecated in Mac OS X 10.2 
  270.  */
  271. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  272.     #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER    DEPRECATED_ATTRIBUTE
  273. #else
  274.     #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER
  275. #endif
  276.  
  277.  
  278.  
  279.  
  280.  
  281. /*
  282.  * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  283.  * 
  284.  * Used on declarations introduced in Mac OS X 10.3 (Modified for QuickTime)
  285.  */
  286. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_2
  287.     #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER     UNAVAILABLE_ATTRIBUTE
  288. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_3
  289.     #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER     WEAK_IMPORT_ATTRIBUTE
  290. #else
  291.     #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  292. #endif
  293.  
  294. /*
  295.  * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED
  296.  * 
  297.  * Used on declarations introduced in Mac OS X 10.3, 
  298.  * and deprecated in Mac OS X 10.3
  299.  */
  300. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  301.     #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED    DEPRECATED_ATTRIBUTE
  302. #else
  303.     #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED    AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  304. #endif
  305.  
  306. /*
  307.  * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
  308.  * 
  309.  * Used on declarations introduced in Mac OS X 10.0, 
  310.  * but later deprecated in Mac OS X 10.3
  311.  */
  312. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  313.     #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3    DEPRECATED_ATTRIBUTE
  314. #else
  315.     #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3    AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  316. #endif
  317.  
  318. /*
  319.  * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
  320.  * 
  321.  * Used on declarations introduced in Mac OS X 10.1, 
  322.  * but later deprecated in Mac OS X 10.3
  323.  */
  324. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  325.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3    DEPRECATED_ATTRIBUTE
  326. #else
  327.     #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3    AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  328. #endif
  329.  
  330. /*
  331.  * DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER
  332.  * 
  333.  * Used on types deprecated in Mac OS X 10.3 
  334.  */
  335. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  336.     #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER    DEPRECATED_ATTRIBUTE
  337. #else
  338.     #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER
  339. #endif
  340.  
  341.  
  342.  
  343. #endif  /* __AVAILABILITYMACROS__ */
  344.  
  345.  
  346.